/*
 * lanzadorSalas.cpp
 *
 *  Created on: 11/08/2014
 *      Author: nicolas
 */

#include <iostream>
#include <sstream>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#include "../defines.h"

using namespace std;

void lanzarSalas() {

	stringstream ssNum, ssLugar;

	int pid;

	cout << "Lanzando Salas ..." << endl;

	//lanzando Salas
	for (int i = 0; i < CANT_ENTRADAS; ++i) {
		ssNum << (i + 1);
		ssLugar << (int) Tipos::LUGAR_ENTRADA;

		//lanzado sala de Entrada

		pid = fork();
		if (pid == 0) {
			execlp("./entradaSala", "EntradaSalaEnt", ssNum.str().c_str(),
					ssLugar.str().c_str(), NULL);
			perror("No se pudo iniciar proceso de EntradaSala en la Entrada");
			exit(EXIT_FAILURE);
		}

		pid = fork();
		if (pid == 0) {
			execlp("./salidaSala", "SalidaSalaEnt", ssNum.str().c_str(),
					ssLugar.str().c_str(), NULL);
			perror("No se pudo iniciar proceso de SalidaSala en la Salida");
			exit(EXIT_FAILURE);
		}

		ssLugar.str("");
		ssLugar << (int) Tipos::LUGAR_ZOO;

		//lanzando sala de Salida
		pid = fork();
		if (pid == 0) {
			execlp("./entradaSala", "EntradaSalaZoo", ssNum.str().c_str(),
					ssLugar.str().c_str(), NULL);
			perror("No se pudo iniciar proceso EntradaSala de Zoo");
			exit(EXIT_FAILURE);
		}

		pid = fork();
		if (pid == 0) {
			execlp("./salidaSala", "SalidaSalaZoo", ssNum.str().c_str(),
					ssLugar.str().c_str(), NULL);
			perror("No se pudo iniciar proceso SalidaSala de Zoo");
			exit(EXIT_FAILURE);
		}

		ssLugar.str("");
		ssNum.str("");
	}

	cout << "Salas lanzadas" << endl;

}

int main(int argc, char** argv) {

	lanzarSalas();

	return 0;
}

